package user.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import entity.Users;

public class DButil {
	public static Connection con=null;
	public static PreparedStatement pr = null;
	public static ResultSet st = null;
	public static Users users=null;
	 
	public static Boolean ExcuteUpdate(String sql,Object[] params) {//通用增删改
		try {
			
			//String qr="delete from users where uid=?";增删改的SQL语句是不一样的
			pr=createPreparedStatement(sql, params);
			if(pr.executeUpdate()>0) {
				return true;
			}else {
				return false;
			}
			
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return false;
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return false;
		}finally {
				Close_All(null, pr, con);
		}
	}
	public static ResultSet Select_All(String sql,Object[] params) {//通用查询
		try {	
			//String qr="select * from users";与上面的注释原因相同
			pr=createPreparedStatement(sql, params);
			st=pr.executeQuery();
			return st;
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return null;
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return null;
		}//finally {通用写法，还没结束，所以不关闭
//				try {
//					if(st!=null)
//						st.close();
//					if(pr!=null)
//						pr.close();
//					if(con!=null)
//						con.close();
//				} catch (SQLException e) {
//					// TODO 自动生成的 catch 块
//					e.printStackTrace();
//				}
//		}
	}
	public static int QueryAllCount(String sql) {//查询所有数据
		int count=-1;
		try {
			pr = createPreparedStatement(sql, null);
			st=pr.executeQuery();
			if(st.next()) {
				count = st.getInt(1);
			}
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally {
			Close_All(st, pr, con);
		}
		return count;
	}
	public static Connection getConnection() throws ClassNotFoundException, SQLException {//连接数据库
		Class.forName("com.mysql.jdbc.Driver");
		return DriverManager.getConnection("jdbc:mysql://localhost:3306/person","root","wlljl123");
			
	}
	public static PreparedStatement createPreparedStatement(String sql,Object[] params) throws ClassNotFoundException, SQLException {//数据库连接语句(connection)
		pr=getConnection().prepareStatement(sql);//将数据库连接语句拿出来单独写个方法getConnection()
		//pr.setInt(1, uid);
		if(params!=null) {
			for (int i = 0; i < params.length; i++) {// 参数（？的个数）不一样,所以使用for根据params的长度决定set的个数
				pr.setObject(i + 1, params[i]);// Object为父类,能够代替String,int等
			}
		}
		return pr;
	}
	public static void  Close_All(ResultSet st,PreparedStatement pr,Connection con) {//关闭所有连接对象
		try {
			if(st!=null)
				st.close();
			if(pr!=null)
				pr.close();
			if(con!=null)
				con.close();
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}
}
